﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SpeedTest.ClassOrStruct
{
    // Fragestellung: Sind viele Klassen inperformant und sollten stattdessen Strukturen genutzt werden?
    // Beispiel: Erstellen von 10000 Kacheln bei Programmstart um die Karte abzubilden.

    // Antwort: Klassen sind ab einer größe von ca. 10 Byte/Klasse schneller zu erstellen als Strukturen.
    // Von http://www.dotnetperls.com/struct-versus-class:  I recommend only using structs when the design of your application is complete and you have performed benchmarking that proves structs are beneficial.
    class Program
    {
        static void Main(string[] args)
        {

            int loopCount = 10000000;
            long startTime, endTime;
            double nanoseconds;

            startTime = DateTime.Now.Ticks * 100;
            for (int x = 0; x < loopCount; x++)
            {
                StructCreator a = new StructCreator();
                a.Init();
                a.doSomething();

                //ClassCreator a = new ClassCreator();
                //a.Init();
                //a.doSomething();
            }
            endTime = DateTime.Now.Ticks * 100;
            nanoseconds = ((double)(endTime - startTime)) / ((double)loopCount);
            Console.WriteLine(nanoseconds.ToString("F") + " ns per operation");
            Console.ReadLine();

        }
    }
}
